<!DOCTYPE html>
<html lang='zh-CN'>

<head>
  <meta name="generator" content="Hexo 7.0.0-rc1">
  <meta name="hexo-theme" content="https://github.com/xaoxuu/hexo-theme-stellar/tree/1.19.0">
  <meta charset="utf-8">
  

  <meta http-equiv='x-dns-prefetch-control' content='on' />
  <link rel='dns-prefetch' href='https://gcore.jsdelivr.net'>
  <link rel="preconnect" href="https://gcore.jsdelivr.net" crossorigin>
  <link rel='dns-prefetch' href='//unpkg.com'>

  <meta name="renderer" content="webkit">
  <meta name="force-rendering" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
  <meta name="HandheldFriendly" content="True" >
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="theme-color" content="#f8f8f8">
  
  <title>滴答清单与Doit.im简单对比 - 在路上</title>

  
    <meta name="description" content="滴答清单是我最近一个多月学习GTD方法后一直在使用的软件，功能很强大，但总感觉有些不趁手，来来回回的也根据自己的理解换了好几次清单配置，但都不如意，直到我那天心血来潮注册了Doit.im，一切不一样了！">
<meta property="og:type" content="article">
<meta property="og:title" content="滴答清单与Doit.im简单对比">
<meta property="og:url" content="http://leyii.gitee.io/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94/index.html">
<meta property="og:site_name" content="在路上">
<meta property="og:description" content="滴答清单是我最近一个多月学习GTD方法后一直在使用的软件，功能很强大，但总感觉有些不趁手，来来回回的也根据自己的理解换了好几次清单配置，但都不如意，直到我那天心血来潮注册了Doit.im，一切不一样了！">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://leyii.gitee.io/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94//180416-1.jpg">
<meta property="og:image" content="http://leyii.gitee.io/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94//180416-2.png">
<meta property="og:image" content="http://leyii.gitee.io/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94//180416-3.jpg">
<meta property="og:image" content="http://leyii.gitee.io/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94//180416-4.jpg">
<meta property="article:published_time" content="2018-04-16T12:58:38.000Z">
<meta property="article:modified_time" content="2023-06-20T06:34:54.984Z">
<meta property="article:author" content="春风老少年">
<meta property="article:tag" content="时间管理">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://leyii.gitee.io/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94//180416-1.jpg">
  
  
  
  <meta name="keywords" content="时间管理">

  <!-- feed -->
  

  
    
<link rel="stylesheet" href="/css/main.css">

  

  

  
    
<link rel="stylesheet" href="https://gcore.jsdelivr.net/gh/highlightjs/cdn-release@11.7.0/build/styles/atom-one-dark.min.css">

  

  


  
</head>

<body>
  




  <div class='l_body' id='start'>
    <aside class='l_left' layout='post'>
    

  

<header class="header"><div class="logo-wrap"><a class="avatar" href="/about/"><div class="bg" style="opacity:0;background-image:url(https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/avatar/round/rainbow64@3x.webp);"></div><img no-lazy class="avatar" src="https://s2.loli.net/2023/06/20/vYeQNJTiL6U9DF5.jpg" onerror="javascript:this.classList.add('error');this.src='https://gcore.jsdelivr.net/gh/cdn-x/placeholder@1.0.4/image/2659360.svg';"></a><a class="title" href="/"><div class="main" ff="title">在路上</div><div class="sub normal cap">ON MY WAY</div><div class="sub hover cap" style="opacity:0"> 阅读是一趟关于时间和空间的旅行</div></a></div>

<nav class="menu dis-select"></nav>
</header>


<div class="widgets">
<widget class="widget-wrapper search"><div class="widget-body"><div class="search-wrapper" id="search"><form class="search-form"><input type="text" class="search-input" id="search-input" data-filter="/blog/" placeholder="文章搜索"><svg t="1670596976048" class="icon search-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2676" width="200" height="200"><path d="M938.2 832.6L723.8 618.1c-2.5-2.5-5.3-4.4-7.9-6.4 36.2-55.6 57.3-121.8 57.3-193.1C773.3 222.8 614.6 64 418.7 64S64 222.8 64 418.6c0 195.9 158.8 354.6 354.6 354.6 71.3 0 137.5-21.2 193.2-57.4 2 2.7 3.9 5.4 6.3 7.8L832.5 938c14.6 14.6 33.7 21.9 52.8 21.9 19.1 0 38.2-7.3 52.8-21.8 29.2-29.1 29.2-76.4 0.1-105.5M418.7 661.3C284.9 661.3 176 552.4 176 418.6 176 284.9 284.9 176 418.7 176c133.8 0 242.6 108.9 242.6 242.7 0 133.7-108.9 242.6-242.6 242.6" p-id="2677"></path></svg></form><div id="search-result"></div><div class="search-no-result">没有找到内容！</div></div></div></widget>


<widget class="widget-wrapper toc single" id="data-toc"><div class="widget-header cap dis-select"><span class="name">滴答清单与Doit.im简单对比</span></div><div class="widget-body fs14"><div class="doc-tree active"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%B7%A5%E5%85%B7%E5%AF%B9%E6%AF%94"><span class="toc-text">工具对比</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%8B%E4%B8%80%E6%AD%A5%E8%A1%8C%E5%8A%A8"><span class="toc-text">下一步行动</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%BB%8A%E6%97%A5%E5%BE%85%E5%8A%9E"><span class="toc-text">今日待办</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%90%90%E6%A7%BD"><span class="toc-text">吐槽</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E4%B8%80%E7%82%B9GTD%E5%BF%83%E5%BE%97"><span class="toc-text">一点GTD心得</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%B0%86%E6%9D%A5-x2F-%E4%B9%9F%E8%AE%B8"><span class="toc-text">将来&#x2F;也许</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E7%AD%89%E5%BE%85"><span class="toc-text">等待</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E4%B8%8B%E4%B8%80%E6%AD%A5%E8%A1%8C%E5%8A%A8-1"><span class="toc-text">下一步行动</span></a></li></ol></li></ol></div></div></widget>




</div>


    </aside>
    <div class='l_main'>
      

      



<div class="bread-nav fs12"><div id="breadcrumb"><a class="cap breadcrumb" href="/">主页</a><span class="sep"></span><a class="cap breadcrumb" href="/">文章</a><span class="sep"></span><a class="cap breadcrumb-link" href="/categories/%E7%B2%BE%E8%BF%9B/">精进</a></div><div id="post-meta">发布于&nbsp;<time datetime="2018-04-16T12:58:38.000Z">2018-04-16</time></div></div>

<article class='md-text content post'>
<h1 class="article-title"><span>滴答清单与Doit.im简单对比</span></h1>
<p>滴答清单是我最近一个多月学习GTD方法后一直在使用的软件，功能很强大，但总感觉有些不趁手，来来回回的也根据自己的理解换了好几次清单配置，但都不如意，直到我那天心血来潮注册了Doit.im，一切不一样了！</p>
<span id="more"></span>

<h2 id="工具对比"><a href="#工具对比" class="headerlink" title="工具对比"></a>工具对比</h2><p><img class="lazy" src="" data-src="/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94//180416-1.jpg" alt="滴答清单 &amp; Doit.im 关系图"></p>
<p>上面这张图是我使用Doit.im后，对比着设置滴答清单，琢磨了三个多小时的成果。</p>
<p>根据我这张小学僧水平的图来看，滴答清单和Doit.im都是从任务出发，由一个个不同的任务构成了整个复杂的系统。在任务方面，他们同样都可以按照日期、日程来安排任务，也都支持子任务和标签分类等操作。但他们最大的区分则是，Doit.im默认就是个目标管理工具，他的“新增任务”里包含了新增目标、项目的操作，侧边栏也是默认就有目标、项目分类的：</p>
<p><img class="lazy" src="" data-src="/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94//180416-2.png" alt="Doit.im侧栏"></p>
<p>滴答清单则不然，滴答默认的内容似乎只有红框里的部分：</p>
<p><img class="lazy" src="" data-src="/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94//180416-3.jpg" alt="滴答清单侧栏-1"></p>
<p>也就是说滴答清单如果去掉中间我自定义的清单部分，初始界面只是个Todo-List，和奇妙清单类似。不过按照GTD的方法逻辑配置后，他也会变成一个目标管理工具：</p>
<p><img class="lazy" src="" data-src="/2018/04/16/%E6%BB%B4%E7%AD%94%E6%B8%85%E5%8D%95%E4%B8%8EDoit.im%E7%AE%80%E5%8D%95%E5%AF%B9%E6%AF%94//180416-4.jpg" alt="滴答清单侧栏-2"></p>
<p>我在滴答的“清单”部分添加了“今日待办”、“将来&#x2F;也许”和“等待”清单，这其实是模仿Doit.im的“聚焦”部分。</p>
<h2 id="下一步行动"><a href="#下一步行动" class="headerlink" title="下一步行动"></a>下一步行动</h2><p>按照我的理解，如果“下一步行动”中的任务是今天计划要做的事，那么应该放在“今日待办”中，然后该项目的下一个步骤被赋予“下一步行动”的属性。Doit.im中可以如此操作，但滴答清单中如果设置一个专用的“下一步行动”清单的话，按照以上GTD逻辑，就要把每个项目对应的“下一步行动”任务都移动到“下一步行动”清单里，显然这是不合适的，难道做完后再移回相应的项目清单里吗？操作起来麻烦，而且万一忘了，会打乱所有的项目配置，所以我利用标签功能设置了智能清单“下一步行动”。</p>
<p>在滴答清单里，每个被确定为“下一步行动”的任务标题里都加个“#next”标签，然后智能清单就能根据此标签筛选出一个所有项目的任务列表。</p>
<p>每个“下一步行动”任务都可以添加日期，所以此智能清单里的任务是可以显示在滴答的“今日”里的。至于我自己添加的“今日待办”，则是为了区分单个任务和项目所属任务，也就是说，“今日待办”里添加的是没有项目的任务。比如今天到公司了，领导给你安排了个事，那么可以写到“今日待办”里，并设置日期是“今天”。而你之前已经计划好了某个项目的开发任务，在清单里也已经分配了某项任务要今天完成，那么当切换到“今天”列表下时，各个清单里设置了“今天”属性的任务都会显示出来。</p>
<p>同理，滴答清单可以借用标签功能，使用智能清单模拟出Doit.im的“目标”功能，比如我上面的“学英语”和“2018读书计划”。</p>
<h2 id="今日待办"><a href="#今日待办" class="headerlink" title="今日待办"></a>今日待办</h2><p>回到滴答的“今日”列表里，上面说了，他可以列出所有今天计划的任务，包括单个任务和不同清单里的项目任务。在Doit.im里，“今日待办”本身是个清单，但同时又有着归类整理“今天”计划任务的功能。而滴答清单里的“今日”本身不是个清单，他只起到归类整理“今日”计划任务的功能，虽然在“今日”里也可以直接创建任务，但创建的任务都是放在“收集箱”里的，Doit.im则不会。所以要模仿Doit.im里“今日待办”的功能，只能在滴答里单独设置个“今日待办”的清单，清单内的任务是没有项目从属的单个任务，设置了“今天”的属性。</p>
<p>然后，同文件夹下的“将来&#x2F;也许”、“等待”就好理解了，和Doit.im里的功能都一样，这个“任务清单”就是Doit.im里的“聚焦”列表。显而易见，清单里的“项目列表”就等于Doit.im里的“所有项目”。每个项目的所属任务标题里我都会加上相应的目标标签，这样利用智能清单就能筛选出相应的项目，所以“所有目标”的功能也就实现了。</p>
<p>经过以上设置后，滴答清单里各个零散的任务和清单被有机的联系成一个整体，我突然有了一种豁然开朗的感觉，最近学习GTD方法和使用滴答清单中的疑惑似乎一下子也都搞清楚了。</p>
<p>所以，在我看来，对于GTD新手来说，滴答清单更像是一个功能强大的Todo-List，不熟悉GTD方法容易被软件强大的自定义功能搞糊涂。而Doit.im则是个目标管理工具，引导使用者按照GTD方法来进行目标规划。也许有人觉得Doit.im设计过度，但我觉得那是因为你只想要个Todo-List，或者是你的计划太单薄、太不成体系了，任何有系统的目标规划都不可能只是个Todo-List，因为我们的生活不只是个“执行清单”。</p>
<h2 id="吐槽"><a href="#吐槽" class="headerlink" title="吐槽"></a>吐槽</h2><p>虽然我非常感谢Doit.im让我融会贯通了GTD方法的学习，但忍不住还是要吐槽一下：</p>
<ol>
<li>滴答子任务完成后，上级任务会自动完成，Doit.im不会。而且滴答完成子任务，上级任务会有进度条标示，Doit.im显然没有。当然，这两个喜好是见仁见智的。</li>
<li>Web端滴答是三列模式，可以直接修改任务名称，操作简便。Doit.im是两列模式，必须打开任务明细，再点“编辑”按钮，操作繁琐。</li>
<li>“下一步行动”放入“今日”时，滴答只需要在任务上设置时间即可。Doit.im需要编辑任务，切换所属清单，再保存，麻烦死了！不过Doit的项目可以放入“下一步行动”，可以比较明确的管理一个大目标，滴答只能放任务，因为滴答的清单是不能加标签的。</li>
<li>滴答免费版基本够用，安卓端也可以用日历模式，多端同步次数不限。Doit.im其它限制不清楚，免费版每天只能同步一次，很糟心！</li>
<li>滴答安卓版有番茄钟，功能凑合着够用，可以抛弃番茄APP。Doit.im可以另外搭配番茄APP，番茄ToDo值得推荐，非常强大，而且超便宜！</li>
<li>个人感觉，滴答是个做加法的工具，搞的是大而全。Doit.im是个做减法的工具，只用心管好自己的一亩三分地儿。</li>
</ol>
<p>最后也吐糟一下滴答清单：Doit.im的目标、项目都可以添加备注，不忘初心。燃鹅，滴答的智能清单和普通清单并不能。所以，我用滴答制定了目标、项目计划，我还要在找个地方记录下设定这个目标时的最初想法？</p>
<h2 id="一点GTD心得"><a href="#一点GTD心得" class="headerlink" title="一点GTD心得"></a>一点GTD心得</h2><p>最后，这篇文章完成的时候，附上一点我对GTD的理解，这也正是某些会被人们误解为“设计过度”的地方（他们也许只习惯使用Todo-List）：</p>
<h3 id="将来-x2F-也许"><a href="#将来-x2F-也许" class="headerlink" title="将来&#x2F;也许"></a>将来&#x2F;也许</h3><p>目前脑子里只有个模糊的想法，具体怎么做还不知道，或者说以后是否实现也还不一定，在GTD里这叫“愿景”。这样的想法就可以先记在这里，等哪天有了比较详细的计划了，再把它转化成相应的目标、项目或任务。</p>
<h3 id="等待"><a href="#等待" class="headerlink" title="等待"></a>等待</h3><p>目前不会做的，但已经确定了明确期限的任务，比如“下个月一号晚上要去看电影”，那么将任务添加到此清单里，然后设置好提醒日期即可。</p>
<h3 id="下一步行动-1"><a href="#下一步行动-1" class="headerlink" title="下一步行动"></a>下一步行动</h3><p>项目里下一项可以直接去做的事，在一个项目里永远只有一个。要找到“下一步行动”就要做好项目的分解，描述“下一步行动”的方法是：1.动词开头，2.内容清晰，3.描述结果，4.设定开始时间、周期、结束时间。比如：早晨9点带着做好的系统分析规划书在会议室开会，讨论系统设计方案，并说服与会者认同我的方案。</p>
<p><strong>我们的整个人生都是被“下一步行动”驱动的！</strong></p>
<p>以上就是我最近学习和使用GTD方法的一点心得，我没有读过《GTD》这本书，我的个人管理入门书籍是<a target="_blank" rel="noopener" href="http://product.dangdang.com/23448876.html">《小强升职记》</a>和<a target="_blank" rel="noopener" href="http://product.dangdang.com/25202792.html">《只管去做</a>》，对于还没有入门的新手，推荐阅读这两本书，以讲故事的方式轻轻松地带你掌握目标管理方法，五星力荐！</p>
<p>PS. 我的滴答PRO 14号到期，所以……</p>



<div class="article-footer reveal fs14"><section id="license"><div class="header"><span>许可协议</span></div><div class="body"><p>本文采用 <a target="_blank" rel="noopener" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">署名-非商业性使用-相同方式共享 4.0 国际</a> 许可协议，转载请注明出处。</p>
</div></section></div>

</article>

<div class="related-wrap reveal" id="read-next"><section class="body"><div class="item" id="prev"><div class="note">较新文章</div><a href="/2023/06/13/%E5%9F%BA%E7%A1%80%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/">基础环境配置</a></div><div class="item" id="next"></div></section></div>


<div class="related-wrap reveal" id="related-posts"></div>



  <div class='related-wrap md-text reveal' id="comments">
    <section class='header cmt-title cap theme'>
      快来参与讨论吧
    </section>
    <section class='body cmt-body beaudar'>
      

<svg class="loading" style="vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2709"><path d="M832 512c0-176-144-320-320-320V128c211.2 0 384 172.8 384 384h-64zM192 512c0 176 144 320 320 320v64C300.8 896 128 723.2 128 512h64z" p-id="2710"></path></svg>

<div id="beaudar" repo="fontomas/blog-comments" issue-term="pathname" theme="preferred-color-scheme" input-position="top" comment-order="desc" loading="false" branch="main"></div>

    </section>
  </div>



      
<footer class="page-footer reveal fs12"><hr><div class="text"><p>本站由 <a href="/">@anonymity</a> 使用 <a target="_blank" rel="noopener" href="https://github.com/xaoxuu/hexo-theme-stellar">Stellar</a> 主题创建。<br>本博客所有文章除特别声明外，均采用 <a target="_blank" rel="noopener" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0</a> 许可协议，转载请注明出处。</p>
</div></footer>

      <div class='float-panel mobile-only blur' style='display:none'>
  <button type='button' class='sidebar-toggle mobile' onclick='sidebar.toggle()'>
    <svg class="icon" style="width: 1em; height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15301"><path d="M566.407 808.3c26.9-0.1 49.3-20.8 51.6-47.6-1.9-27.7-23.9-49.7-51.6-51.6h-412.6c-28.2-1.4-52.6 19.5-55.5 47.6 2.3 26.8 24.6 47.5 51.6 47.6h416.5v4z m309.3-249.9c26.9-0.1 49.3-20.8 51.6-47.6-2.2-26.8-24.6-47.5-51.6-47.6h-721.9c-27.7-2.8-52.5 17.4-55.3 45.1-0.1 0.8-0.1 1.7-0.2 2.5 0.9 27.2 23.6 48.5 50.7 47.6H875.707z m-103.1-245.9c26.9-0.1 49.3-20.8 51.6-47.6-0.4-28.3-23.2-51.1-51.5-51.6h-618.9c-29.5-1.1-54.3 21.9-55.5 51.4v0.2c1.4 27.8 25.2 49.2 53 47.8 0.8 0 1.7-0.1 2.5-0.2h618.8z" p-id="15302"></path><path d="M566.407 808.3c26.9-0.1 49.3-20.8 51.6-47.6-1.9-27.7-23.9-49.7-51.6-51.6h-412.6c-28.2-1.4-52.6 19.5-55.5 47.6 1.9 27.7 23.9 49.7 51.6 51.6h416.5z m309.3-249.9c26.9-0.1 49.3-20.8 51.6-47.6-2.2-26.8-24.6-47.5-51.6-47.6h-721.9c-27.7-2.8-52.5 17.4-55.3 45.1-0.1 0.8-0.1 1.7-0.2 2.5 0.9 27.2 23.6 48.5 50.7 47.6H875.707z m-103.1-245.9c26.9-0.1 49.3-20.8 51.6-47.6-0.4-28.3-23.2-51.1-51.5-51.6h-618.9c-29.5-1.1-54.3 21.9-55.5 51.4v0.2c1.4 27.8 25.2 49.2 53 47.8 0.8 0 1.7-0.1 2.5-0.2h618.8z" p-id="15303"></path></svg>
  </button>
</div>

    </div>
  </div>
  <div class='scripts'>
    <script type="text/javascript">
  const stellar = {
    // 懒加载 css https://github.com/filamentgroup/loadCSS
    loadCSS: (href, before, media, attributes) => {
      var doc = window.document;
      var ss = doc.createElement("link");
      var ref;
      if (before) {
        ref = before;
      } else {
        var refs = (doc.body || doc.getElementsByTagName("head")[0]).childNodes;
        ref = refs[refs.length - 1];
      }
      var sheets = doc.styleSheets;
      if (attributes) {
        for (var attributeName in attributes) {
          if (attributes.hasOwnProperty(attributeName)) {
            ss.setAttribute(attributeName, attributes[attributeName]);
          }
        }
      }
      ss.rel = "stylesheet";
      ss.href = href;
      ss.media = "only x";
      function ready(cb) {
        if (doc.body) {
          return cb();
        }
        setTimeout(function () {
          ready(cb);
        });
      }
      ready(function () {
        ref.parentNode.insertBefore(ss, before ? ref : ref.nextSibling);
      });
      var onloadcssdefined = function (cb) {
        var resolvedHref = ss.href;
        var i = sheets.length;
        while (i--) {
          if (sheets[i].href === resolvedHref) {
            return cb();
          }
        }
        setTimeout(function () {
          onloadcssdefined(cb);
        });
      };
      function loadCB() {
        if (ss.addEventListener) {
          ss.removeEventListener("load", loadCB);
        }
        ss.media = media || "all";
      }
      if (ss.addEventListener) {
        ss.addEventListener("load", loadCB);
      }
      ss.onloadcssdefined = onloadcssdefined;
      onloadcssdefined(loadCB);
      return ss;
    },

    // 从 butterfly 和 volantis 获得灵感
    loadScript: (src, opt) => new Promise((resolve, reject) => {
      var script = document.createElement('script');
      if (src.startsWith('/')){
        src = stellar.config.root + src.substring(1);
      }
      script.src = src;
      if (opt) {
        for (let key of Object.keys(opt)) {
          script[key] = opt[key]
        }
      } else {
        // 默认异步，如果需要同步，第二个参数传入 {} 即可
        script.async = true
      }
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    }),

    // https://github.com/jerryc127/hexo-theme-butterfly
    jQuery: (fn) => {
      if (typeof jQuery === 'undefined') {
        stellar.loadScript(stellar.plugins.jQuery).then(fn)
      } else {
        fn()
      }
    }
  };
  stellar.version = '1.19.0';
  stellar.github = 'https://github.com/xaoxuu/hexo-theme-stellar/tree/1.19.0';
  stellar.config = {
    date_suffix: {
      just: '刚刚',
      min: '分钟前',
      hour: '小时前',
      day: '天前',
      month: '个月前',
    },
    root : '/',
  };

  // required plugins (only load if needs)
  stellar.plugins = {
    jQuery: 'https://gcore.jsdelivr.net/npm/jquery@3.6.2/dist/jquery.min.js'
  };

  if ('local_search') {
    stellar.search = {};
    stellar.search.service = 'local_search';
    if (stellar.search.service == 'local_search') {
      let service_obj = Object.assign({}, {"field":"all","path":"/search.json","content":true,"codeblock":true,"sort":"-date"});
      stellar.search[stellar.search.service] = service_obj;
    }
  }

  // stellar js
  stellar.plugins.stellar = Object.assign({"sites":"/js/plugins/sites.js","friends":"/js/plugins/friends.js","ghinfo":"/js/plugins/ghinfo.js","timeline":"/js/plugins/timeline.js","linkcard":"/js/plugins/linkcard.js","fcircle":"/js/plugins/fcircle.js","weibo":"/js/plugins/weibo.js"});

  stellar.plugins.marked = Object.assign("https://cdn.bootcdn.net/ajax/libs/marked/4.0.18/marked.min.js");
  // optional plugins
  if ('true' == 'true') {
    stellar.plugins.lazyload = Object.assign({"enable":true,"js":"https://gcore.jsdelivr.net/npm/vanilla-lazyload@17.8.3/dist/lazyload.min.js","transition":"blur"});
  }
  if ('true' == 'true') {
    stellar.plugins.swiper = Object.assign({"enable":true,"css":"https://unpkg.com/swiper@8.4.5/swiper-bundle.min.css","js":"https://unpkg.com/swiper@8.4.5/swiper-bundle.min.js"});
  }
  if ('' == 'true') {
    stellar.plugins.scrollreveal = Object.assign({"enable":null,"js":"https://gcore.jsdelivr.net/npm/scrollreveal@4.0.9/dist/scrollreveal.min.js","distance":"8px","duration":500,"interval":100,"scale":1});
  }
  if ('true' == 'true') {
    stellar.plugins.preload = Object.assign({"enable":true,"service":"flying_pages","instant_page":"https://gcore.jsdelivr.net/gh/volantis-x/cdn-volantis@4.1.2/js/instant_page.js","flying_pages":"https://gcore.jsdelivr.net/gh/gijo-varghese/flying-pages@2.1.2/flying-pages.min.js"});
  }
  if ('true' == 'true') {
    stellar.plugins.fancybox = Object.assign({"enable":true,"js":"https://gcore.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js","css":"https://gcore.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.css","selector":".swiper-slide img"});
  }
  if ('false' == 'true') {
    stellar.plugins.heti = Object.assign({"enable":false,"css":"https://unpkg.com/heti@0.9.2/umd/heti.min.css","js":"https://unpkg.com/heti@0.9.2/umd/heti-addon.min.js"});
  }
  if ('true' == 'true') {
    stellar.plugins.copycode = Object.assign({"enable":true,"js":"/js/plugins/copycode.js","default_text":"Copy","success_text":"Copied"});
  }
</script>

<!-- required -->

  
<script src="/js/main.js" async></script>



<!-- optional -->

  <script>
  function loadBeaudar() {
    const els = document.querySelectorAll("#comments #beaudar");
    if (els.length === 0) return;
    els.forEach((el, i) => {
      try {
        el.innerHTML = '';
      } catch (error) {
        console.log(error);
      }
      var script = document.createElement('script');
      script.src = 'https://beaudar.lipk.org/client.js';
      script.async = true;
      for (let key of Object.keys(el.attributes)) {
        let attr = el.attributes[key];
        if (['class', 'id'].includes(attr.name) === false) {
          script.setAttribute(attr.name, attr.value);
        }
      }
      el.appendChild(script);
    });
  }
  window.addEventListener('DOMContentLoaded', (event) => {
      loadBeaudar();
  });
</script>




<!-- inject -->


  </div>
</body>
</html>
